#include "FreeRTOS.h"
#include "task.h"
#include "execute.h"
#include "led01.h"
#include "beep.h"
#include "oled.h"
#include "handler.h"
#include "stdio.h"
#include "config_logic.h"

THData  thdata;
TaskHandle_t execute_task_handler;

extern GatherTargetData  targetData;


//void airContrl();
//void curtainContrl();

//执行模块初始化
void executeTaskInit(){
    
     //printf("load before state=%d-----\r\n",thdata.state);
     if (thdata.state==0)
    {
       //如果机器重启 就需要自己去从at24芯片中去加载数据
       loadTHData(&thdata);
			 //printf("load after state=%d-----\r\n",thdata.state);
       
    }
     //配置默认值
     // thdata.state = 15;    //  0000 1(窗帘) 1(空调) 1(告警) 1(显示)
     // thdata.tempMax = 200;
     // thdata.tempMin = -20;
     // thdata.humiMax = 200;
     // thdata.humiMin = 20;
     // thdata.sunshine = 70;
     // thdata.smoke = 200;
    
    led_init();
    BEEP_Init();
    OLED_Init();
}

//执行模块函数
void ExecuteTask(void * param){
    while (1)
    {  
     u8 state=thdata.state;
		 //printf("state=%d\r\n",state);
			//state=15;
     if(state & 0x01){
          showContrl();
     }
     if(state & 0x02){
          alarmContrl();
     }
     if(state & 0x04){
          //airContrl();
     }
     if(state & 0x08){
          //curtainContrl();
     }
     vTaskDelay(500);
    }
}

void showContrl(){
     OLED_ShowString(0,0,"set sunshine:",12);
     OLED_ShowNum(80,0,thdata.sunshine,3,12);
	   OLED_ShowString(0,10,"detected sunshine:",12);
	   OLED_ShowNum(105,10,targetData.sunshine,3,12);
	   OLED_ShowString(0,20,"state:",12);
     OLED_ShowNum(40,20,thdata.state,3,12);
	   OLED_Refresh_Gram();
}
void alarmContrl(){
 
//     if(targetData.temp < thdata.tempMin || targetData.temp > thdata.tempMax){
//          BEEP = 1;
//          led2 = 0;
//     }else{
//			    BEEP = 0;
//          led2 = 1;
//     }
//     if(targetData.humi < thdata.humiMin || targetData.humi > thdata.humiMax){
//          BEEP = 1;
//          led3 = 0;
//     }else{
//			    BEEP = 0;
//          led3 = 1;
//     }
//     if( targetData.smoke > thdata.smoke){
//          BEEP = 1;
//          led4 = 0;
//     }else{
//          led4 = 1;
//			    BEEP = 0;
//     }
     if( targetData.sunshine > thdata.sunshine){
          led5 = 0;
			    BEEP = 1;
     }else{
          led5 = 1;
			    BEEP = 0;
     }
//     if( targetData.raindrop == 0){
//          BEEP = 1;
//          led5 = 0;
//     }else{
//          led5 = 1;
//			    BEEP = 0;
//     }

}

//创建执行模块任务
void createExecuteTask(){
     xTaskCreate(ExecuteTask,"ExecuteTask",128,NULL,2,&execute_task_handler);
}

void setTHdata(THData dataTemp){
    thdata=dataTemp;
}